| Conditions | 25 |
| Paths | > 20000 |
| Total Lines | 230 |
| Code Lines | 165 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 0 | ||
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
Complex classes like thickbox.js ➔ tb_show often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.
Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.
| 1 | /* |
||
| 31 | function tb_show(caption, url, imageGroup) {//function called when the user clicks on a thickbox link
|
||
| 32 | |||
| 33 | try {
|
||
| 34 | if (typeof document.body.style.maxHeight === "undefined") {//if IE 6
|
||
| 35 | $("body","html").css({height: "100%", width: "100%"});
|
||
| 36 | $("html").css("overflow","hidden");
|
||
| 37 | if (document.getElementById("TB_HideSelect") === null) {//iframe to hide select elements in ie6
|
||
| 38 | $("body").append("<iframe id='TB_HideSelect'></iframe><div id='TB_overlay'></div><div id='TB_window'></div>");
|
||
| 39 | $("#TB_overlay").click(tb_remove);
|
||
| 40 | } |
||
| 41 | }else{//all others
|
||
| 42 | if(document.getElementById("TB_overlay") === null){
|
||
| 43 | $("body").append("<div id='TB_overlay'></div><div id='TB_window'></div>");
|
||
| 44 | $("#TB_overlay").click(tb_remove);
|
||
| 45 | } |
||
| 46 | } |
||
| 47 | |||
| 48 | if(tb_detectMacXFF()){
|
||
| 49 | $("#TB_overlay").addClass("TB_overlayMacFFBGHack");//use png overlay so hide flash
|
||
| 50 | }else{
|
||
| 51 | $("#TB_overlay").addClass("TB_overlayBG");//use background and opacity
|
||
| 52 | } |
||
| 53 | |||
| 54 | if(caption===null){caption="";}
|
||
| 55 | $("body").append("<div id='TB_load'><img src='"+imgLoader.src+"' /></div>");//add loader to the page
|
||
| 56 | $('#TB_load').show();//show loader
|
||
| 57 | |||
| 58 | var baseURL; |
||
| 59 | if(url.indexOf("?")!==-1){ //ff there is a query string involved
|
||
| 60 | baseURL = url.substr(0, url.indexOf("?"));
|
||
| 61 | }else{
|
||
| 62 | baseURL = url; |
||
| 63 | } |
||
| 64 | |||
| 65 | var urlString = /\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$/; |
||
| 66 | var urlType = baseURL.toLowerCase().match(urlString); |
||
| 67 | |||
| 68 | if(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif' || urlType == '.bmp'){//code to show images
|
||
| 69 | |||
| 70 | TB_PrevCaption = ""; |
||
| 71 | TB_PrevURL = ""; |
||
| 72 | TB_PrevHTML = ""; |
||
| 73 | TB_NextCaption = ""; |
||
| 74 | TB_NextURL = ""; |
||
| 75 | TB_NextHTML = ""; |
||
| 76 | TB_imageCount = ""; |
||
| 77 | TB_FoundURL = false; |
||
| 78 | if(imageGroup){
|
||
| 79 | TB_TempArray = $("a[@rel="+imageGroup+"]").get();
|
||
| 80 | for (TB_Counter = 0; ((TB_Counter < TB_TempArray.length) && (TB_NextHTML === "")); TB_Counter++) {
|
||
| 81 | var urlTypeTemp = TB_TempArray[TB_Counter].href.toLowerCase().match(urlString); |
||
| 82 | if (!(TB_TempArray[TB_Counter].href == url)) {
|
||
| 83 | if (TB_FoundURL) {
|
||
| 84 | TB_NextCaption = TB_TempArray[TB_Counter].title; |
||
| 85 | TB_NextURL = TB_TempArray[TB_Counter].href; |
||
| 86 | TB_NextHTML = "<span id='TB_next'> <a href='#'>Next ></a></span>"; |
||
| 87 | } else {
|
||
| 88 | TB_PrevCaption = TB_TempArray[TB_Counter].title; |
||
| 89 | TB_PrevURL = TB_TempArray[TB_Counter].href; |
||
| 90 | TB_PrevHTML = "<span id='TB_prev'> <a href='#'>< Prev</a></span>"; |
||
| 91 | } |
||
| 92 | } else {
|
||
| 93 | TB_FoundURL = true; |
||
| 94 | TB_imageCount = "Image " + (TB_Counter + 1) +" of "+ (TB_TempArray.length); |
||
| 95 | } |
||
| 96 | } |
||
| 97 | } |
||
| 98 | |||
| 99 | imgPreloader = new Image(); |
||
| 100 | imgPreloader.onload = function(){
|
||
| 101 | imgPreloader.onload = null; |
||
| 102 | |||
| 103 | // Resizing large images - orginal by Christian Montoya edited by me. |
||
| 104 | var pagesize = tb_getPageSize(); |
||
| 105 | var x = pagesize[0] - 150; |
||
| 106 | var y = pagesize[1] - 150; |
||
| 107 | var imageWidth = imgPreloader.width; |
||
| 108 | var imageHeight = imgPreloader.height; |
||
| 109 | if (imageWidth > x) {
|
||
| 110 | imageHeight = imageHeight * (x / imageWidth); |
||
| 111 | imageWidth = x; |
||
| 112 | if (imageHeight > y) {
|
||
| 113 | imageWidth = imageWidth * (y / imageHeight); |
||
| 114 | imageHeight = y; |
||
| 115 | } |
||
| 116 | } else if (imageHeight > y) {
|
||
| 117 | imageWidth = imageWidth * (y / imageHeight); |
||
| 118 | imageHeight = y; |
||
| 119 | if (imageWidth > x) {
|
||
| 120 | imageHeight = imageHeight * (x / imageWidth); |
||
| 121 | imageWidth = x; |
||
| 122 | } |
||
| 123 | } |
||
| 124 | // End Resizing |
||
| 125 | |||
| 126 | TB_WIDTH = imageWidth + 30; |
||
| 127 | TB_HEIGHT = imageHeight + 60; |
||
| 128 | $("#TB_window").append("<a href='' id='TB_ImageOff' title='Close'><img id='TB_Image' src='"+url+"' width='"+imageWidth+"' height='"+imageHeight+"' alt='"+caption+"'/></a>" + "<div id='TB_caption'>"+caption+"<div id='TB_secondLine'>" + TB_imageCount + TB_PrevHTML + TB_NextHTML + "</div></div><div id='TB_closeWindow'><a href='#' id='TB_closeWindowButton' title='Close'><span style='font-size:18px;padding:5px;'><i class='fa fa-close'></i></span></a></div>");
|
||
| 129 | |||
| 130 | $("#TB_closeWindowButton").click(tb_remove);
|
||
| 131 | |||
| 132 | if (!(TB_PrevHTML === "")) {
|
||
| 133 | function goPrev(){
|
||
| 134 | if($(document).unbind("click",goPrev)){$(document).unbind("click",goPrev);}
|
||
| 135 | $("#TB_window").remove();
|
||
| 136 | $("body").append("<div id='TB_window'></div>");
|
||
| 137 | tb_show(TB_PrevCaption, TB_PrevURL, imageGroup); |
||
| 138 | return false; |
||
| 139 | } |
||
| 140 | $("#TB_prev").click(goPrev);
|
||
| 141 | } |
||
| 142 | |||
| 143 | if (!(TB_NextHTML === "")) {
|
||
| 144 | function goNext(){
|
||
| 145 | $("#TB_window").remove();
|
||
| 146 | $("body").append("<div id='TB_window'></div>");
|
||
| 147 | tb_show(TB_NextCaption, TB_NextURL, imageGroup); |
||
| 148 | return false; |
||
| 149 | } |
||
| 150 | $("#TB_next").click(goNext);
|
||
| 151 | |||
| 152 | } |
||
| 153 | |||
| 154 | document.onkeydown = function(e){
|
||
| 155 | if (e == null) { // ie
|
||
| 156 | keycode = event.keyCode; |
||
| 157 | } else { // mozilla
|
||
| 158 | keycode = e.which; |
||
| 159 | } |
||
| 160 | if(keycode == 27){ // close
|
||
| 161 | tb_remove(); |
||
| 162 | } else if(keycode == 190){ // display previous image
|
||
| 163 | if(!(TB_NextHTML == "")){
|
||
| 164 | document.onkeydown = ""; |
||
| 165 | goNext(); |
||
| 166 | } |
||
| 167 | } else if(keycode == 188){ // display next image
|
||
| 168 | if(!(TB_PrevHTML == "")){
|
||
| 169 | document.onkeydown = ""; |
||
| 170 | goPrev(); |
||
| 171 | } |
||
| 172 | } |
||
| 173 | }; |
||
| 174 | |||
| 175 | tb_position(); |
||
| 176 | $("#TB_load").remove();
|
||
| 177 | $("#TB_ImageOff").click(tb_remove);
|
||
| 178 | $("#TB_window").css({display:"block"}); //for safari using css instead of show
|
||
| 179 | }; |
||
| 180 | |||
| 181 | imgPreloader.src = url; |
||
| 182 | }else{//code to show html
|
||
| 183 | |||
| 184 | var queryString = url.replace(/^[^\?]+\??/,''); |
||
| 185 | var params = tb_parseQuery( queryString ); |
||
| 186 | |||
| 187 | TB_WIDTH = (params['width']*1) + 30 || 630; //defaults to 630 if no paramaters were added to URL |
||
| 188 | TB_HEIGHT = (params['height']*1) + 40 || 440; //defaults to 440 if no paramaters were added to URL |
||
| 189 | ajaxContentW = TB_WIDTH - 30; |
||
| 190 | ajaxContentH = TB_HEIGHT - 45; |
||
| 191 | |||
| 192 | if(url.indexOf('TB_iframe') != -1){// either iframe or ajax window
|
||
| 193 | urlNoQuery = url.split('TB_');
|
||
| 194 | $("#TB_iframeContent").remove();
|
||
| 195 | if(params['modal'] != "true"){//iframe no modal
|
||
| 196 | $("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton' title='Close'><span style='font-size:18px;padding:5px;'><i class='fa fa-close'></i></span></a></div></div><iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;' > </iframe>");
|
||
| 197 | }else{//iframe modal
|
||
| 198 | $("#TB_overlay").unbind();
|
||
| 199 | $("#TB_window").append("<iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;'> </iframe>");
|
||
| 200 | } |
||
| 201 | }else{// not an iframe, ajax
|
||
| 202 | if($("#TB_window").css("display") != "block"){
|
||
| 203 | if(params['modal'] != "true"){//ajax no modal
|
||
| 204 | $("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton'><span style='font-size:18px;padding:5px;'><i class='fa fa-close'></i></span></a></div></div><div id='TB_ajaxContent' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px'></div>");
|
||
| 205 | }else{//ajax modal
|
||
| 206 | $("#TB_overlay").unbind();
|
||
| 207 | $("#TB_window").append("<div id='TB_ajaxContent' class='TB_modal' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px;'></div>");
|
||
| 208 | } |
||
| 209 | }else{//this means the window is already up, we are just loading new content via ajax
|
||
| 210 | $("#TB_ajaxContent")[0].style.width = ajaxContentW +"px";
|
||
| 211 | $("#TB_ajaxContent")[0].style.height = ajaxContentH +"px";
|
||
| 212 | $("#TB_ajaxContent")[0].scrollTop = 0;
|
||
| 213 | $("#TB_ajaxWindowTitle").html(caption);
|
||
| 214 | } |
||
| 215 | } |
||
| 216 | |||
| 217 | $("#TB_closeWindowButton").click(tb_remove);
|
||
| 218 | |||
| 219 | if(url.indexOf('TB_inline') != -1){
|
||
| 220 | $("#TB_ajaxContent").append($('#' + params['inlineId']).children());
|
||
| 221 | $("#TB_window").unload(function () {
|
||
| 222 | $('#' + params['inlineId']).append( $("#TB_ajaxContent").children() ); // move elements back when you're finished
|
||
| 223 | }); |
||
| 224 | tb_position(); |
||
| 225 | $("#TB_load").remove();
|
||
| 226 | $("#TB_window").css({display:"block"});
|
||
| 227 | }else if(url.indexOf('TB_iframe') != -1){
|
||
| 228 | tb_position(); |
||
| 229 | if($.browser.safari){//safari needs help because it will not fire iframe onload
|
||
| 230 | $("#TB_load").remove();
|
||
| 231 | $("#TB_window").css({display:"block"});
|
||
| 232 | } |
||
| 233 | }else{
|
||
| 234 | $("#TB_ajaxContent").load(url += "&random=" + (new Date().getTime()),function(){//to do a post change this load method
|
||
| 235 | tb_position(); |
||
| 236 | $("#TB_load").remove();
|
||
| 237 | tb_init("#TB_ajaxContent a.thickbox");
|
||
| 238 | $("#TB_window").css({display:"block"});
|
||
| 239 | }); |
||
| 240 | } |
||
| 241 | |||
| 242 | } |
||
| 243 | |||
| 244 | if(!params['modal']){
|
||
| 245 | document.onkeyup = function(e){
|
||
| 246 | if (e == null) { // ie
|
||
| 247 | keycode = event.keyCode; |
||
| 248 | } else { // mozilla
|
||
| 249 | keycode = e.which; |
||
| 250 | } |
||
| 251 | if(keycode == 27){ // close
|
||
| 252 | tb_remove(); |
||
| 253 | } |
||
| 254 | }; |
||
| 255 | } |
||
| 256 | |||
| 257 | } catch(e) {
|
||
| 258 | //nothing here |
||
| 259 | } |
||
| 260 | } |
||
| 261 | |||
| 320 |